home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 4
/
FM Towns Free Software Collection 4 - Disc 1.iso
/
pao
/
towns
/
paolib
/
sysinf.asm
< prev
next >
Wrap
Assembly Source File
|
1991-10-18
|
4KB
|
138 lines
;==============================================================================
; << 386ASM V2.0 >> for FM TOWNS
;==============================================================================
.386p
PAGE 60,132
NAME SYS_getinf
TITLE GET SYSTEM INFORMATION
;==============================================================================
; システム情報の取得
;
; < High C からの呼出形式 >
; unsigned char sysbuf[200] ;
; int SYS_getinf( unsigned char *sysbuf ) ;
; -------------------------------------------
; int DRV_single() ;
; =0 : シングルモードの設定無し
; =0ffH : 有り
;
; < note > : TABS = 4
;
; < History >
; 1990.01.18 : CREATE
; 1991.04.23 : 清書
;
; Programmed by Y.Hirata ( Nifty-ID : NAB03321 )
;==============================================================================
;
INCLUDE hc.inc ;
;
CGROUP GROUP pmcode, CODE ;
DGROUP GROUP pmdata, DATA ;
;
;--------------------------------------------
public SYS_getinf ; システム情報の取得
public DRV_single ; シングルドライブモードチェック
;--------------------------------------------
;
INCLUDE rbios.inc ; ネイティブからリアルBIOSを
; 呼ぶための処理
;
;
;********************************************
; 定数定義
;********************************************
;
SCHK_OFF EQU 0446H ; SINGLE MODE CHECK
;
;////////////////////////////////////////////
; ネイティブ部
;////////////////////////////////////////////
;
pmcode SEGMENT ;
ASSUME cs:CGROUP,ds:DGROUP ;
;
ALIGN 4 ;
;
;********************************************
; GET SETUP INFORMATION
;********************************************
db 'SYS_getinf' ;
;
;--------------------------------------------
; システム情報の取得
;--------------------------------------------
ALIGN 4 ; dword boundary
SYS_getinf PROC NEAR ;
;
#datasize EQU 50 ; DATA SIZE (BIOS OUTPUT)
#int_no EQU 08Eh ; INTERRUPT NUMBER
#function EQU 00h ; FUNCTION NO.
#outparm1 EQU SS:[ebp+8] ; DATA ADRESS
;
push ebp ;
mov ebp,esp ; スタックフレーム形成
;
cld ;
push ds ;
push es ;
push esi ;
push edi ;
push ebx ;
push ecx ;
call Make_bufs ; DOS-Extenderのバッファ確保
;
xor eax,eax
mov ah,#function ; FUNCTION NO.
mov di,word PTR RBIOS_rmoff ;
push dword PTR RBIOS_rmseg ; ES
push dword PTR RBIOS_rmseg ; DS
push dword PTR #int_no ; INTERRUPT NO.
call RBIOS_call ; CALL REAL MODE BIOS
add esp,12 ;
;
mov ecx,#datasize ;
push ds ;
pop es ;
mov edi,#outparm1 ;
mov esi,dword PTR RBIOS_pmoff
;
mov ds,word PTR RBIOS_pmseg ;
rep movsd ;
movzx eax,ah ; SET RETURN CODE
;
pop ecx ;
pop ebx ;
pop edi ;
pop esi ;
pop es ;
pop ds ;
;
pop ebp ; スタックフレーム開放
ret ;
SYS_getinf ENDP ;
;
;--------------------------------------------
; シングルドライブモードのチェック
;--------------------------------------------
ALIGN 4 ; dword boundary
DRV_single PROC NEAR ;
push ebp ;
mov ebp,esp ; スタックフレーム形成
;
push fs ;
push REALSEG ;
pop fs ;
xor eax,eax ;
mov al,byte PTR fs:[SCHK_OFF]
pop fs ;
;
pop ebp ; スタックフレーム開放
ret ;
DRV_single endp ;
;
pmcode ENDS ;
;
END